package com.ny.mapper;

import java.util.List;
import com.ny.domain.LockerRentalDO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

/**
 * LockerRentalMapper
 *
 * @author MSI-NB
 * @date 2025-03-08 13:14:38
 */
@Mapper
public interface LockerRentalMapper {

    /**
     * 通过租赁ID查询租赁记录
     * @Param rentalId
     * @Return LockerRentalDO
     */
    LockerRentalDO selectById(@Param("rentalId") Integer rentalId);

    /**
     * 通过会员ID查询租赁记录
     * @Param memberId
     * @Return List<LockerRentalDO>
     */
    List<LockerRentalDO> selectByMemberId(@Param("memberId") Integer memberId);

    /**
     * 查询所有租赁记录
     * @Return List<LockerRentalDO>
     */
    List<LockerRentalDO> selectAll();

    /**
     * 通过寄存柜ID查询未结束的租赁记录
     * @Param lockerId
     * @Return LockerRentalDO
     */
    LockerRentalDO selectByLockerIdAndEndTime(@Param("lockerId") Integer lockerId);

    /**
     * 通过寄存柜ID和租赁ID查询未结束的租赁记录（排除当前租赁记录）
     * @Param rentalId
     * @Param lockerId
     * @Return LockerRentalDO
     */
    LockerRentalDO selectByLockerIdAndEndTimeExcludingId(@Param("rentalId") Integer rentalId, @Param("lockerId") Integer lockerId);

    /**
     * 插入租赁记录
     * @Param lockerRentalDO
     * @Return int
     */
    int insert(LockerRentalDO lockerRentalDO);

    /**
     * 更新租赁记录
     * @Param lockerRentalDO
     * @Return int
     */
    int updateById(LockerRentalDO lockerRentalDO);

    /**
     * 删除租赁记录
     * @Param rentalId
     * @Return int
     */
    int deleteById(@Param("rentalId") Integer rentalId);
}
